home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 1.iso / dist / fw_apache2.idb / usr / freeware / apache2 / include / http_connection.h.z / http_connection.h
C/C++ Source or Header  |  2002-07-08  |  6KB  |  150 lines

  1. /* ====================================================================
  2.  * The Apache Software License, Version 1.1
  3.  *
  4.  * Copyright (c) 2000-2002 The Apache Software Foundation.  All rights
  5.  * reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  *
  11.  * 1. Redistributions of source code must retain the above copyright
  12.  *    notice, this list of conditions and the following disclaimer.
  13.  *
  14.  * 2. Redistributions in binary form must reproduce the above copyright
  15.  *    notice, this list of conditions and the following disclaimer in
  16.  *    the documentation and/or other materials provided with the
  17.  *    distribution.
  18.  *
  19.  * 3. The end-user documentation included with the redistribution,
  20.  *    if any, must include the following acknowledgment:
  21.  *       "This product includes software developed by the
  22.  *        Apache Software Foundation (http://www.apache.org/)."
  23.  *    Alternately, this acknowledgment may appear in the software itself,
  24.  *    if and wherever such third-party acknowledgments normally appear.
  25.  *
  26.  * 4. The names "Apache" and "Apache Software Foundation" must
  27.  *    not be used to endorse or promote products derived from this
  28.  *    software without prior written permission. For written
  29.  *    permission, please contact apache@apache.org.
  30.  *
  31.  * 5. Products derived from this software may not be called "Apache",
  32.  *    nor may "Apache" appear in their name, without prior written
  33.  *    permission of the Apache Software Foundation.
  34.  *
  35.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  36.  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  37.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  38.  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  39.  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  40.  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  41.  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  42.  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  43.  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  44.  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  45.  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  46.  * SUCH DAMAGE.
  47.  * ====================================================================
  48.  *
  49.  * This software consists of voluntary contributions made by many
  50.  * individuals on behalf of the Apache Software Foundation.  For more
  51.  * information on the Apache Software Foundation, please see
  52.  * <http://www.apache.org/>.
  53.  */
  54.  
  55. #ifndef APACHE_HTTP_CONNECTION_H
  56. #define APACHE_HTTP_CONNECTION_H
  57.  
  58. #include "apr_hooks.h"
  59. #include "apr_network_io.h"
  60. #include "apr_buckets.h"
  61.  
  62. #ifdef __cplusplus
  63. extern "C" {
  64. #endif
  65.  
  66. /**
  67.  * @package Apache connection library
  68.  */
  69. #ifdef CORE_PRIVATE
  70. /**
  71.  * This is the protocol module driver.  This calls all of the
  72.  * pre-connection and connection hooks for all protocol modules.
  73.  * @param c The connection on which the request is read
  74.  * @param csd The mechanism on which this connection is to be read.  
  75.  *            Most times this will be a socket, but it is up to the module
  76.  *            that accepts the request to determine the exact type.
  77.  * @deffunc void ap_process_connection(conn_rec *c, void *csd)
  78.  */
  79. AP_CORE_DECLARE(void) ap_process_connection(conn_rec *c, void *csd);
  80.  
  81. AP_CORE_DECLARE(void) ap_flush_conn(conn_rec *c);
  82.  
  83. /**
  84.  * This function is responsible for the following cases:
  85.  * <pre>
  86.  * we now proceed to read from the client until we get EOF, or until
  87.  * MAX_SECS_TO_LINGER has passed.  the reasons for doing this are
  88.  * documented in a draft:
  89.  *
  90.  * http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt
  91.  *
  92.  * in a nutshell -- if we don't make this effort we risk causing
  93.  * TCP RST packets to be sent which can tear down a connection before
  94.  * all the response data has been sent to the client.
  95.  * </pre>
  96.  * @param c The connection we are closing
  97.  */
  98. AP_DECLARE(void) ap_lingering_close(conn_rec *c);
  99. #endif
  100.  
  101.   /* Hooks */
  102. /**
  103.  * create_connection is a RUN_FIRST hook which allows modules to create 
  104.  * connections. In general, you should not install filters with the 
  105.  * create_connection hook. If you require vhost configuration information 
  106.  * to make filter installation decisions, you must use the pre_connection
  107.  * or install_network_transport hook. This hook should close the connection
  108.  * if it encounters a fatal error condition.
  109.  *
  110.  * @param p The pool from which to allocate the connection record
  111.  * @param csd The socket that has been accepted
  112.  * @param conn_id A unique identifier for this connection.  The ID only
  113.  *                needs to be unique at that time, not forever.
  114.  * @param sbh A handle to scoreboard information for this connection.
  115.  * @return An allocated connection record or NULL.
  116.  */
  117. AP_DECLARE_HOOK(conn_rec *, create_connection,
  118.                 (apr_pool_t *p, server_rec *server, apr_socket_t *csd,
  119.                  long conn_id, void *sbh, apr_bucket_alloc_t *alloc))
  120.    
  121. /**
  122.  * This hook gives protocol modules an opportunity to set everything up
  123.  * before calling the protocol handler.  All pre-connection hooks are
  124.  * run until one returns something other than ok or decline
  125.  * @param c The connection on which the request has been received.
  126.  * @param csd The mechanism on which this connection is to be read.  
  127.  *            Most times this will be a socket, but it is up to the module
  128.  *            that accepts the request to determine the exact type.
  129.  * @return OK or DECLINED
  130.  * @deffunc int ap_run_pre_connection(conn_rec *c, void *csd)
  131.  */
  132. AP_DECLARE_HOOK(int,pre_connection,(conn_rec *c, void *csd))
  133.  
  134. /**
  135.  * This hook implements different protocols.  After a connection has been
  136.  * established, the protocol module must read and serve the request.  This
  137.  * function does that for each protocol module.  The first protocol module
  138.  * to handle the request is the last module run.
  139.  * @param c The connection on which the request has been received.
  140.  * @return OK or DECLINED
  141.  * @deffunc int ap_run_process_connection(conn_rec *c)
  142.  */
  143. AP_DECLARE_HOOK(int,process_connection,(conn_rec *c))
  144.  
  145. #ifdef __cplusplus
  146. }
  147. #endif
  148.  
  149. #endif    /* !APACHE_HTTP_REQUEST_H */
  150.